/*
 *文件作用: 声明对外类型和API
 */

#ifndef LEPTJSON_H__
#define LEPTJSON_H__

//声明json的数据类型
typedef enum
{
    LEPT_NULL,  //null
    LEPT_FALSE,  //false
    LEPT_TRUE,  //true
    LEPT_NUMBER,  //number
    LEPT_STRING,  //string
    LEPT_ARRAY,  //array
    LEPT_OBJECT  //object
} lept_type;

//声明json树形数据结构的节点，用以保存解析json得到的数据
typedef struct
{
    lept_type type; //节点的数据类型
} lept_value;

/*
 *json语法基本格式:
 *      whitespace - value - whitespace
 * 对于value，现只预设三种字面值: NULL, TRUE, FALSE
 */
enum
{
    LEPT_PARSE_OK = 0,            //解析正确
    LEPT_PARSE_EXPECT_VALUE,      //只含有whitespace
    LEPT_PARSE_ROOT_NOT_SINGULAR, // value之后的whitespace后跟有其他字符
    LEPT_PARSE_INVALID_VALUE      //值不属于三种字面值
};

// API 声明
int lept_parse(lept_value *v, const char *json); //解析json字符串的类型
lept_type lept_get_type(const lept_value *v);    //获取解析结果中的类型

#endif